home *** CD-ROM | disk | FTP | other *** search
-
- #include "includes/Clock.h"
-
-
- /********************************************************************/
-
- struct Gadget gadgets[] =
- {
- { // the dragbar
- &gadgets[1],
- 12, 0, -24, 8,
- GFLG_GADGHNONE | GFLG_RELWIDTH,
- GACT_RELVERIFY, GTYP_WDRAGGING,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL
- },
- { // the close gadget
- &gadgets[2],
- 0, 0, 12, 8,
- GFLG_GADGHNONE,
- GACT_RELVERIFY, GTYP_CLOSE,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL
- },
- { // the tofront/toback gadget
- NULL,
- -12, 0, 12, 8,
- GFLG_GADGHNONE | GFLG_RELRIGHT,
- GACT_RELVERIFY, GTYP_WDEPTH,
- NULL, NULL, NULL, NULL,
- NULL, NULL, NULL
- }
- };
-
- enum
- {
- GADGET_ID_TEXT,
- GADGET_ID_HOURS,
- GADGET_ID_MINUTES,
- GADGET_ID_STRING,
- GADGET_ID_OK,
- GADGET_ID_CANCEL
- };
-
-
- struct TagItem slider[] =
- {
- GA_RelVerify, TRUE,
- GTSL_Max, 59,
- TAG_DONE
- };
-
- ObjectDef winobjects[] =
- {
- {
- OD_GADGET, TEXT_KIND,
- { 0, 0, SIZE_MAXIMUM, 3 },
- { 2, 2, -2, 0 },
- MSG_ALARM, PLACETEXT_IN,
- GADGET_ID_TEXT, NULL
- },
-
- {
- OD_GADGET, TEXT_KIND,
- { 0, 3, SIZE_MAXIMUM, 1 },
- { 2, 4, -2, 4 },
- NULL, PLACETEXT_IN,
- GADGET_ID_STRING, NULL
- },
- {
- OD_GADGET, SLIDER_KIND,
- { 10, 4, SIZE_MAXIMUM, 1 },
- { 2, 10, -2, 4 },
- MSG_HOURS, PLACETEXT_LEFT,
- GADGET_ID_HOURS, &slider[0]
- },
- {
- OD_GADGET, SLIDER_KIND,
- { 10, 5, SIZE_MAXIMUM, 1 },
- { 2, 14, -2, 4 },
- MSG_MINS, PLACETEXT_LEFT,
- GADGET_ID_MINUTES, &slider[0]
- },
-
- {
- OD_GADGET, BUTTON_KIND,
- { 0, POS_RIGHT_JUSTIFY, 10, 1 },
- { 2, -2, -4, 4 },
- MSG_OK, PLACETEXT_IN | BUTTONFLAG_OKAY_BUTTON,
- GADGET_ID_OK, NULL
- },
-
- {
- OD_GADGET, BUTTON_KIND,
- { POS_RIGHT_JUSTIFY, POS_RIGHT_JUSTIFY, 10, 1 },
- { -2, -2, -4, 4 },
- MSG_CANCEL, PLACETEXT_IN | BUTTONFLAG_CANCEL_BUTTON,
- GADGET_ID_CANCEL, NULL
- },
-
- { OD_END }
- };
-
- ConfigWindow cfgwin =
- {
- { POS_CENTER, POS_CENTER, 30, 8 },
- { 0, 0, 4, 20 }
- };
-
-
- /********************************************************************/
- // PROTOS
-
- extern BOOL WriteConfig( ClockData *cd );
- extern BOOL ReadConfig( ClockData *cd );
-
- void Deteach( struct Screen *screen);//, IPC_CMDData *idata );
- void __saveds TimerClock( void );
- ULONG __asm __saveds clock_startup( register __a0 IPCData *ipc,
- register __a1 ClockData *cd );
-
- BOOL HandleIDCMP( ClockData *cd );
- BOOL DoMenu( ClockData *cd );
-
- struct Window *OpenWin( ClockData *cd );
- void CloseWin( ClockData *cd );
-
- void __asm refresh_callback( register __d0 ULONG type,
- register __a0 struct Window *win,
- register __a1 ClockData * cd );
-
- void BorderDraw( ClockData *cd );
- void PrintTime( ClockData *cd );
- void About( ClockData *cd );
- void GetSizes( ClockData *cd );
- void FRequest( ClockData *cd );
- BOOL PicRequest( ClockData *cd );
- void DisableOther( PopUpMenu *popmenu, ULONG start, ULONG end, ULONG exclude );
- BOOL GetBitMap( ClockData *cd, STRPTR name );
- void BeepBeep( ClockData *cd );
- void GetAlarm( ClockData *cd );
- BOOL HandleOwnRequest( ClockData *cd );
- BOOL HandleIPC( ClockData *cd );
- void InitPopMenu( ClockData *cd );
-
- /********************************************************************/
-
- void Deteach( struct Screen *screen)//, IPC_CMDData *idata )
- {
- ClockData *cd;
-
- if( (cd = AllocMemH( mempool, sizeof(ClockData))) )
- {
- cd->screen = screen;
-
- cd->a4 = getreg( REG_A4 );
- cd->module = (struct Library *) getreg( REG_A6 );
- cd->library = DOpusBase;
-
- ReadConfig( cd );
-
- cd->txtattr.ta_Name = cd->fontname;
-
- if( !IPC_Launch(0, &clock_ipc, "Timer_Clock",
- (ULONG) TimerClock, 4000,
- (ULONG) cd, DOSBase) )
- FreeMemH( cd );
- }
- }
-
- /********************************************************************/
-
- void __saveds TimerClock( void )
- {
- struct Library *DOpusBase;
- IPCData *ipc;
- ClockData *cd;
-
- if (!(DOpusBase=(struct Library *)FindName(&((struct ExecBase *)*((ULONG *)4))->LibList,"dopus5.library")))
- return;
-
- ipc = IPC_ProcStartup( (ULONG *) &cd, clock_startup);
-
- putreg( REG_A4, cd->a4 );
-
- if( !ipc )
- {
- IPC_Free( cd->ipc );
- FreeMemH( cd );
- return;
- }
-
- WaitPort( cd->ipc->command_port );
- if( HandleIPC( cd ) )
- {
- IPC_Free( cd->ipc );
- FreeMemH( cd );
- return;
- }
-
- OpenWin( cd );
-
- SetSoftStyle( cd->win->RPort, cd->itext[2].ITextFont->ta_Style, AskSoftStyle( cd->win->RPort));
-
- cd->day = 1;
- BorderDraw( cd);
- PrintTime( cd );
-
- if( (cd->th = AllocTimer(UNIT_VBLANK, 0)) )
- {
- StartTimer( cd->th, 0, 900000 );
-
- while( TRUE )
- {
- cd->signals = Wait( 1 << cd->th->port->mp_SigBit |
- 1 << cd->notify_port->mp_SigBit |
- 1 << cd->ipc->command_port->mp_SigBit |
- (cd->win ? 1 << cd->win->UserPort->mp_SigBit : 0) |
- (cd->time_req ? 1 << cd->time_req->UserPort->mp_SigBit : 0) |
- (cd->req ? 1 << cd->req->UserPort->mp_SigBit : 0) );
-
- if( HandleOwnRequest( cd) )
- {
- CloseConfigWindow( cd->time_req );
- cd->time_req = NULL;
- }
-
- if( cd->signals & 1 << cd->th->port->mp_SigBit )
- {
- GetMsg( cd->th->port );
- PrintTime( cd );
- StartTimer( cd->th, 0, 900000 );
- }
-
- cd->running = 0;
-
- if( cd->signals & 1 << cd->ipc->command_port->mp_SigBit )
- {
- cd->running = HandleIPC( cd );
-
- }
-
- if( cd->signals & 1 << cd->notify_port->mp_SigBit )
- {
- while( (cd->nmsg = (APTR) GetMsg(cd->notify_port)) )
- {
- if( cd->nmsg->dn_Type & DN_OPUS_QUIT )
- cd->running = TRUE;
-
- if( cd->win && (cd->nmsg->dn_Type & DN_OPUS_HIDE) )
- {
- cd->ibox.Left = cd->win->LeftEdge;
- cd->ibox.Top = cd->win->TopEdge;
- cd->ibox.Width = cd->win->Width;
- cd->ibox.Height = cd->win->Height;
-
- CloseWin( cd );
- cd->win = NULL;
-
- cd->day = 1;
-
- }
-
- if( !cd->win && (cd->nmsg->dn_Type & DN_OPUS_SHOW) )
- {
- cd->screen = ((struct Window *) cd->nmsg->dn_Data)->WScreen;
-
- // FRAGLICH !! (wegen der Geschwindigkeit...)
-
- OpenWin( cd );
- }
- ReplyFreeMsg( (APTR) cd->nmsg );
- }
- }
-
- if( cd->running || (cd->win && HandleIDCMP(cd)) )
- break;
-
- if( cd->req && SysReqHandler(cd->req, NULL, FALSE) > -2 )
- {
- FreeSysRequest( cd->req );
- cd->req = NULL;
- }
- }
- }
- CloseWin( cd );
-
- if( cd->time_req )
- CloseConfigWindow( cd->time_req );
-
- if( cd->bm )
- FreeBitMap( cd->bm );
-
- FreeTimer( cd->th );
-
- if( cd->sound )
- DisposeDTObject( cd->sound );
-
- if( cd->alarm )
- DisposeDTObject( cd->alarm );
-
- while( !IsListEmpty((struct List *) &cd->popmenu.item_list) )
- FreeMemH( RemTail((struct List *) &cd->popmenu.item_list) );
-
- while( !IsListEmpty((struct List *) &cd->submenu) )
- FreeMemH( RemTail((struct List *) &cd->submenu) );
-
- while( !IsListEmpty((struct List *) &cd->subtime) )
- FreeMemH( RemTail((struct List *) &cd->subtime) );
-
- CloseFont( cd->txtfont );
-
- if( cd->notify_port )
- {
- if( cd->notify )
- RemoveNotifyRequest( cd->notify );
-
- while( (cd->nmsg = (APTR) GetMsg(cd->notify_port)) )
- ReplyFreeMsg( (APTR) cd->nmsg );
-
- DeleteMsgPort( cd->notify_port );
- }
-
- --cd->module->lib_OpenCnt;
- IPC_Free( cd->ipc );
- FreeMemH( cd );
- clock_ipc = NULL;
- }
-
- /********************************************************************/
-
- ULONG __asm __saveds clock_startup( register __a0 IPCData *ipc,
- register __a1 ClockData *cd )
- {
- struct Library *DOpusBase;
-
- putreg( REG_A4,cd->a4 );
- cd->ipc = ipc;
- DOpusBase = cd->library;
-
- if( !cd->screen )
- UnlockPubScreen( NULL, (cd->screen = LockPubScreen(NULL)) );
-
- if( !cd->txtattr.ta_YSize )
- cd->txtattr.ta_YSize = cd->screen->Font->ta_YSize;
-
- if( cd->fontname )
- {
- if( Strnicmp(&cd->fontname[cd->running=strlen(cd->fontname)-5], ".font", 5) )
- strcat( cd->fontname, ".font" );
- }
- else
- strcpy( cd->txtattr.ta_Name, cd->screen->Font->ta_Name );
-
- cd->txtfont = OpenDiskFont( &cd->txtattr );
-
- if( !cd->itext[0].FrontPen )
- cd->itext[0].FrontPen = 1;
-
- for( cd->running = 0; cd->running < 3; cd->running++ )
- {
- cd->itext[cd->running].IText = &cd->ibuffer[cd->running][0];
- cd->itext[cd->running].FrontPen = cd->itext[0].FrontPen;
- cd->itext[cd->running].BackPen = cd->itext[0].BackPen;
- cd->itext[cd->running].DrawMode = cd->itext[0].DrawMode;
- cd->itext[cd->running].ITextFont = &cd->txtattr;
-
- if( cd->running < 2 )
- cd->itext[cd->running].NextText = &cd->itext[cd->running+1];
- }
-
- GetSizes( cd );
-
- if( !cd->ibox.Left )
- {
- if( !(cd->flags & LEFT_PASSED) )
- cd->ibox.Left = DEFAULT_LEFT_EDGE;
- }
-
- if( (cd->ibox.Left + cd->ibox.Width) > (cd->screen->LeftEdge + cd->screen->Width) )
- cd->ibox.Left = cd->screen->LeftEdge + cd->screen->Width - cd->ibox.Width;
-
- if( !cd->ibox.Top )
- {
- if( !(cd->flags & TOP_PASSED) )
- cd->ibox.Top = DEFAULT_TOP_EDGE;
- }
-
- if( (cd->ibox.Top + cd->ibox.Height) > (cd->screen->TopEdge + cd->screen->Height) )
- cd->ibox.Top = cd->screen->TopEdge + cd->screen->Height - cd->ibox.Height;
-
- cd->flags >>= 9;
- cd->flags <<= 9;
-
- if( (cd->flags & BG_TRANS) ||
- (cd->flags & BG_PIC) )
- {
- cd->bm = AllocBitMap( cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap );
-
- if( cd->flags & BG_PIC )
- {
- if( GetBitMap(cd, cd->picture) )
- {
- cd->flags >>= 11;
- cd->flags <<= 11;
- }
- else
- cd->flags ^= BG_PIC;
- }
-
- if( cd->flags & BG_TRANS )
- {
- cd->flags >>= 10;
- cd->flags <<= 10;
-
- }
- }
-
- if( !(cd->flags & BG_PIC) &&
- !(cd->flags & BG_TRANS) )
- cd->flags |= BG_PLAIN;
-
- if( cd->flags & BORDER_OFF )
- {
- if( cd->flags & BORDER )
- cd->flags ^= BORDER;
- cd->flags ^= BORDER_OFF;
- }
- else
- {
- if( cd->flags & BORDER_ON )
- {
- cd->flags |= BORDER;
- cd->flags ^= BORDER_ON;
- }
- }
-
- cd->day = 1;
-
- if( (cd->notify_port = CreateMsgPort()) )
- {
- cd->notify = AddNotifyRequest( DN_OPUS_QUIT | DN_OPUS_HIDE | DN_OPUS_SHOW,
- NULL, cd->notify_port );
- }
-
- InitPopMenu( cd );
-
- ++cd->module->lib_OpenCnt;
- return 1;
- }
-
- /********************************************************************/
-
- BOOL HandleIDCMP( ClockData *cd )
- {
- while( (cd->inmsg = GT_GetIMsg(cd->win->UserPort)) )
- {
- cd->imsg = *cd->inmsg;
- GT_ReplyIMsg( cd->inmsg );
-
- switch( cd->imsg.Class )
- {
- case IDCMP_REFRESHWINDOW:
-
- refresh_callback( 0, cd->win, cd );
- break;
-
- case IDCMP_CHANGEWINDOW:
-
- cd->ibox.Left = cd->win->LeftEdge;
- cd->ibox.Top = cd->win->TopEdge;
- cd->ibox.Width = cd->win->Width;
- cd->ibox.Height = cd->win->Height;
-
- CloseWin( cd );
-
- OpenWin( cd );
-
- break;
-
- case IDCMP_ACTIVEWINDOW:
- case IDCMP_INACTIVEWINDOW:
-
- cd->day = 1;
-
- BorderDraw( cd );
- PrintTime( cd );
- break;
-
- case IDCMP_CLOSEWINDOW:
-
- if( cd->req )
- break;
-
- return TRUE;
-
- case IDCMP_MOUSEBUTTONS:
-
- if( !cd->req && cd->imsg.Code == SELECTDOWN &&
- DoMenu(cd) )
- return TRUE;
- break;
- }
- }
- return FALSE;
- }
-
-
- BOOL DoMenu( ClockData *cd )
- {
-
- if( DoPopUpMenu(cd->win, &cd->popmenu, &cd->popitem, SELECTDOWN) != -1 )
- {
- switch( cd->popitem->id )
- {
- case POPID_SOUND: cd->flags ^= SOUND;
- //if( cd->flags
- break;
-
- case POPID_FIX_IT: WriteConfig( cd );
- break;
-
- case POPID_BORDER:
- if( cd->popitem->flags & POPUPF_CHECKED )
- cd->flags |= BORDER;
- else
- cd->flags ^= (cd->flags & BORDER) ? BORDER : 0;
-
- BorderDraw( cd );
- break;
-
- case POPID_AUTOSTART:
- SetEnv( CLOCKSTARTVAR, (cd->popitem->flags & POPUPF_CHECKED) ? "1" : "0", TRUE );
- break;
-
- case POPID_CHANGE_FONT:
- cd->ibox.Left = cd->win->LeftEdge;
- cd->ibox.Top = cd->win->TopEdge;
-
- CloseWin( cd );
-
- if( cd->bm )
- {
- FreeBitMap( cd->bm );
- cd->bm = NULL;
- }
-
- FRequest( cd );
- GetSizes( cd );
-
- if( cd->flags & BG_PIC ||
- cd->flags & BG_TRANS )
- {
- cd->bm = AllocBitMap( cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap );
-
- if( cd->flags & BG_PIC )
- GetBitMap( cd, cd->picture );
- }
-
- OpenWin( cd );
- break;
-
- case POPID_CLOSE:
- return TRUE;
-
- case POPID_ALARMSET: GetAlarm( cd );
- break;
-
- case POPID_ALARMONOFF:
- if( cd->popitem->flags & POPUPF_CHECKED )
- cd->flags |= ALARM;
- else
- cd->flags ^= ALARM;
- break;
-
- case POPID_ABOUT:
- if( !cd->req )
- About( cd );
- break;
-
- case POPID_PLAIN:
- cd->flags = (cd->flags & BORDER) ? BORDER|BG_PLAIN : BG_PLAIN;
-
- if( cd->bm )
- {
- FreeBitMap( cd->bm );
- cd->bm = NULL;
- }
-
- BorderDraw( cd );
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, cd->popitem->id );
- break;
-
- case POPID_TRANSPARENT:
- cd->flags = (cd->flags & BORDER) ? BORDER|BG_TRANS : BG_TRANS;
- CloseWin( cd );
-
- if( !cd->bm )
- {
- cd->bm = AllocBitMap( cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap );
- }
-
- OpenWin( cd );
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, cd->popitem->id );
- break;
-
- case POPID_PICTURE:
- CloseWin( cd );
-
- if( (PicRequest(cd) && cd->picture[0]) )
- {
- if( !cd->bm )
- {
- cd->bm = AllocBitMap( cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap );
- }
-
- if( GetBitMap(cd, cd->picture) )
- {
- cd->flags = (cd->flags & BORDER) ? BORDER|BG_PIC : BG_PIC;
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, cd->popitem->id );
- }
- else
- cd->popitem->flags ^= POPUPF_CHECKED;
- }
- else
- {
- if( cd->flags & BG_PIC )
- GetPopUpItem( &cd->popmenu, POPID_PICTURE )->flags |= POPUPF_CHECKED;
- else
- cd->popitem->flags ^= POPUPF_CHECKED;
- }
- OpenWin( cd );
- break;
- }
- }
- return FALSE;
- }
-
- /********************************************************************/
- // WINDOW STUFF
-
- struct Window *OpenWin( ClockData *cd )
- {
- if( (cd->pubscr = FindPubScreen(cd->screen, TRUE)) )
- {
- if( cd->bm && (cd->flags & BG_TRANS) )
- BltBitMap( cd->screen->RastPort.BitMap,
- cd->ibox.Left, cd->ibox.Top,
- cd->bm,
- 0, 0,
- cd->ibox.Width, cd->ibox.Height,
- ABNC|ABC,
- -1, NULL );
-
- cd->win = OpenWindowTags( NULL,
- WA_Left, cd->ibox.Left,
- WA_Top, cd->ibox.Top,
- WA_Height, cd->ibox.Height,
- WA_Width, cd->ibox.Width,
-
- WA_Gadgets, &gadgets[0],
-
- WA_Flags, WFLG_BORDERLESS | WFLG_NEWLOOKMENUS |
- WFLG_SIMPLE_REFRESH,
-
- WA_IDCMP, IDCMP_CHANGEWINDOW | IDCMP_REFRESHWINDOW |
- IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW |
- IDCMP_CLOSEWINDOW | IDCMP_MOUSEBUTTONS,
-
- WA_AutoAdjust, TRUE,
- WA_ScreenTitle, VERSION_STRING,
- WA_PubScreen, cd->pubscr->psn_Screen,
-
- TAG_DONE );
-
- BorderDraw( cd );
-
- cd->day = 1;
- PrintTime( cd );
-
- UnlockPubScreen( NULL, cd->pubscr->psn_Screen );
- }
- return cd->win;
- }
-
- void CloseWin( ClockData *cd )
- {
- if( cd->req )
- {
- FreeSysRequest( cd->req );
- cd->req = NULL;
- }
-
- CloseWindow( cd->win );
- }
-
-
- // USED FOR REFRESH ON IDCMP-MESSAGES *AND* FOR THE POPUP-MENU
-
- void __asm refresh_callback( register __d0 ULONG type,
- register __a0 struct Window *win,
- register __a1 ClockData *cd )
- {
- GT_BeginRefresh( win );
-
- cd->day = 1;
- BorderDraw( cd );
- PrintTime( cd );
-
- GT_EndRefresh( win, TRUE );
- }
-
- /********************************************************************/
-
- void BorderDraw( ClockData *cd )
- {
- if( cd->bm )
- BltBitMapRastPort( cd->bm,
- 0, 0,
- cd->win->RPort,
- 0, 0,
- cd->win->Width, cd->win->Height,
- ABNC|ABC );
- else
- EraseRect( cd->win->RPort,
- 0, 0,
- cd->win->Width, cd->win->Height );
-
- if( !(cd->flags & BORDER) )
- return;
-
- SetAPen( cd->win->RPort, 1 );
- Move( cd->win->RPort, 1, cd->win->Height - 1 );
- Draw( cd->win->RPort, cd->win->Width-1, cd->win->Height - 1 );
- Draw( cd->win->RPort, cd->win->Width-1, 1 );
- SetAPen( cd->win->RPort, 2 );
- Move( cd->win->RPort, 0, cd->win->Height - 1 );
- Draw( cd->win->RPort, 0, 0 );
- Draw( cd->win->RPort, cd->win->Width-1, 0 );
- }
-
- void PrintTime( ClockData *cd )
- {
- DateStamp( &cd->date );
-
- cd->hour = UDivMod32( cd->date.ds_Minute, 60 );
-
- cd->minute = getreg(REG_D1);
-
- if( cd->day && cd->day != cd->date.ds_Days )
- {
- cd->dt.dat_Stamp = cd->date;
- cd->dt.dat_Format = FORMAT_DOS;
- cd->dt.dat_Flags = 0;
- cd->dt.dat_StrDay = cd->itext[1].IText;
- cd->dt.dat_StrDate = cd->itext[0].IText;
- cd->dt.dat_StrTime = 0;
-
- DateToStr( &cd->dt );
- }
-
- if( cd->bm )
- BltBitMapRastPort( cd->bm,
- cd->itext[2].LeftEdge, cd->itext[2].TopEdge+10,
- cd->win->RPort,
- cd->itext[2].LeftEdge, cd->itext[2].TopEdge+10,
- IntuiTextLength(&cd->itext[2]), (cd->itext[2].ITextFont ? cd->itext[2].ITextFont->ta_YSize : cd->screen->Font->ta_YSize),
- ABNC|ABC );
- else
- {
-
- EraseRect( cd->win->RPort,
- 2, 8,
- cd->win->Width - 4,
- ( (cd->day != cd->date.ds_Days) ? cd->win->Height - 2 : 9 + (cd->itext[2].ITextFont ? cd->itext[2].ITextFont->ta_YSize : cd->screen->Font->ta_YSize)) );
-
- }
-
- sprintf( cd->itext[2].IText, "%02ld%lc%02ld", cd->hour, UDivMod32(cd->date.ds_Tick, TICKS_PER_SECOND)%2 ? ':' : '.', cd->minute );
-
- for( cd->running = 0; cd->running < 3; cd->running++ )
- {
- cd->itext[cd->running].LeftEdge = (cd->win->Width - IntuiTextLength(&cd->itext[cd->running]))/2;
- cd->itext[2-cd->running].TopEdge = (cd->win->Height-10)/3*cd->running;
- }
-
- cd->running = 2;
-
- if( cd->day != cd->date.ds_Days )
- {
- cd->running = 0;
-
- if( cd->bm )
- BltBitMapRastPort( cd->bm,
- 2, 8,
- cd->win->RPort,
- 2, 8,
- cd->win->Width-4, cd->win->Height-12,
- ABNC|ABC );
-
- cd->day = cd->date.ds_Days;
- }
-
- PrintIText( cd->win->RPort, &cd->itext[cd->running], 0, 10 );
-
- BeepBeep( cd );
- }
-
- /********************************************************************/
-
- void About( ClockData *cd )
- {
- cd->es.es_StructSize = sizeof( struct EasyStruct );
- cd->es.es_Title = DOpusGetString( locale, MSG_TITLE );
- cd->es.es_TextFormat = DOpusGetString( locale, MSG_CLOCKABOUT );
- cd->es.es_GadgetFormat = DOpusGetString( locale, MSG_CLOCKOK );
-
- cd->req = BuildEasyRequestArgs( cd->win, &cd->es, IDCMP_GADGETUP, NULL );
- }
-
-
- void GetSizes( ClockData *cd )
- {
- strcpy( cd->itext[2].IText, " 88-FEB-88 " );
-
- cd->ibox.Width = IntuiTextLength( &cd->itext[2] ) + 4;
-
- cd->ibox.Height = (cd->itext[2].ITextFont ? cd->itext[2].ITextFont->ta_YSize : cd->screen->Font->ta_YSize) * 3 + 18;
-
- }
-
- /********************************************************************/
-
- void FRequest( ClockData *cd )
- {
- if( (cd->freq = AllocAslRequest(ASL_FontRequest, NULL)) )
- {
- if( AslRequestTags( cd->freq,
- ASLFO_Screen, cd->screen,
-
- ASLFO_DoFrontPen, TRUE,
- ASLFO_DoBackPen, TRUE,
- ASLFO_DoDrawMode, TRUE,
- ASLFO_DoStyle, TRUE,
-
- ASLFO_TitleText, DOpusGetString(locale, MSG_CHOOSEFONT),
-
- TAGIF(cd->fontname[0], ASLFO_InitialName), cd->fontname,
- TAGIF(cd->fontname[0], ASLFO_InitialSize), cd->txtattr.ta_YSize,
- TAGIF(cd->fontname[0], ASLFO_InitialStyle), cd->txtattr.ta_Style,
- TAGIF(cd->fontname[0], ASLFO_InitialFlags), cd->txtattr.ta_Flags,
- ASLFO_InitialFrontPen, (cd->fontname[0] ? cd->itext[0].FrontPen : 1),
-
- TAGIF(cd->fontname[0], ASLFO_InitialBackPen), cd->itext[0].BackPen,
- TAGIF(cd->fontname[0], ASLFO_InitialDrawMode), cd->itext[0].DrawMode,
- TAG_DONE ) )
- {
- cd->txtattr = cd->freq->fo_Attr;
-
- if( cd->txtfont )
- {
- CloseFont( cd->txtfont );
-
- }
-
- strcpy( cd->fontname, cd->freq->fo_Attr.ta_Name );
- cd->txtattr.ta_Name = cd->fontname;
- cd->txtfont = OpenDiskFont( &cd->txtattr );
-
- for( cd->running = 0; cd->running < 3; cd->running++ )
- {
- cd->itext[cd->running].ITextFont = &cd->txtattr;
- cd->itext[cd->running].FrontPen = cd->freq->fo_FrontPen;
- cd->itext[cd->running].BackPen = cd->freq->fo_BackPen;
- cd->itext[cd->running].DrawMode = cd->freq->fo_DrawMode;
-
- }
- }
- FreeAslRequest( cd->freq );
- }
- }
-
-
- BOOL PicRequest( ClockData *cd )
- {
- STRPTR ptr;
-
- if( (cd->freq = AllocAslRequest(ASL_FileRequest, NULL)) )
- {
- cd->buffer[0] = 0;
-
- if( cd->picture[0] )
- {
- strcpy( cd->buffer, (ptr = FilePart(cd->picture)) );
- *ptr = 0;
- }
-
- cd->running = FALSE;
-
- while( !(cd->running = AslRequestTags( (struct FileRequester *) cd->freq,
- ASLFR_Screen, cd->screen,
- ASLFR_TitleText, DOpusGetString(locale, MSG_CHOOSEPIC),
- TAGIF(cd->buffer[0], ASLFR_InitialFile), cd->buffer,
- TAGIF(cd->picture[0], ASLFR_InitialDrawer), cd->picture,
- TAG_DONE )) && IoErr() );
- if( cd->running )
- {
- AddPart( cd->picture, ((struct FileRequester *) cd->freq)->fr_Drawer, 256 );
- AddPart( cd->picture, ((struct FileRequester *) cd->freq)->fr_File, 256 );
- }
- else
- {
- if( cd->buffer[0] )
- AddPart( cd->picture, cd->buffer, 256 );
- }
-
- FreeAslRequest( cd->freq );
- }
-
- return (BOOL) cd->running;
- }
-
- void DisableOther( PopUpMenu *popmenu, ULONG start, ULONG end, ULONG exclude )
- {
- ULONG counter;
- PopUpItem *item;
-
- GetPopUpItem( popmenu, exclude )->flags |= POPUPF_CHECKED;
-
- for( counter = start; counter <= end; counter++ )
- {
- if( counter != exclude &&
- ( item = GetPopUpItem(popmenu, counter) )->flags & POPUPF_CHECKED )
- item->flags ^= POPUPF_CHECKED;
- }
- }
-
- /********************************************************************/
-
- BOOL GetBitMap( ClockData *cd, STRPTR name )
- {
- cd->running = FALSE;
-
- if( cd->bm )
- {
- if( strlen(name) )
- {
- if( (cd->obj = NewDTObject(name,
- DTA_SourceType, DTST_FILE,
- PDTA_Screen, cd->screen,
- OBP_Precision, PRECISION_EXACT,
- DTA_GroupID, GID_PICTURE,
- PDTA_FreeSourceBitMap, TRUE,
- TAG_DONE)) )
- {
- if( DoMethod( cd->obj, DTM_PROCLAYOUT, NULL, 1 ) )
- {
- GetDTAttrs( cd->obj,
- PDTA_DestBitMap, &cd->sourcebm,
- PDTA_BitMapHeader, &cd->sourcebmhead,
- TAG_DONE );
-
- cd->bsa.bsa_XSrcFactor = cd->bsa.bsa_SrcWidth = cd->sourcebmhead->bmh_Width;
- cd->bsa.bsa_YSrcFactor = cd->bsa.bsa_SrcHeight = cd->sourcebmhead->bmh_Height;
-
- cd->bsa.bsa_XDestFactor = cd->ibox.Width;
- cd->bsa.bsa_YDestFactor = cd->ibox.Height;
- cd->bsa.bsa_SrcBitMap = cd->sourcebm;
- cd->bsa.bsa_DestBitMap = cd->bm;
-
- BitMapScale( &cd->bsa );
- cd->running = TRUE;
- }
-
- DisposeDTObject( cd->obj );
- cd->obj = NULL;
- }
- }
- }
-
- return (BOOL) cd->running;
- }
-
- void BeepBeep( ClockData *cd )
- {
-
-
- if( cd->hour > 12 )
- cd->hour -= 12;
-
- switch( cd->minute )
- {
- case 0: if( (cd->flags & SOUND) && !(cd->flags & WRING_DONE) &&
- (cd->sound = NewDTObject( "DOpus5:Sounds/Hour.snd",
- DTA_GroupID, GID_SOUND,
- TAG_DONE)) )
- {
- SetAttrs( cd->sound, SDTA_Cycles, !cd->hour ? 12 : cd->hour, TAG_DONE );
- DoMethod( cd->sound, DTM_TRIGGER, NULL, STM_PLAY, TAG_DONE );
- cd->flags |= WRING_DONE;
- }
- break;
-
- case 1: if( cd->flags & WRING_DONE )
- {
- DisposeDTObject( cd->sound );
- cd->flags ^= WRING_DONE;
- cd->sound = NULL;
- }
- break;
-
- case 15:
- case 30:
- case 45: if( (cd->flags & SOUND) && !(cd->flags & WRING_DONE) &&
- (cd->sound = NewDTObject( "DOpus5:Sounds/Quarter.snd",
- DTA_GroupID, GID_SOUND,
- TAG_DONE)) )
- {
- SetAttrs( cd->sound, SDTA_Cycles, cd->minute/15, TAG_DONE );
- DoMethod( cd->sound, DTM_TRIGGER, NULL, STM_PLAY, TAG_DONE );
- cd->flags |= WRING_DONE;
- }
- break;
-
- case 16:
- case 31:
- case 46: if( cd->flags & WRING_DONE )
- {
- DisposeDTObject( cd->sound );
- cd->flags ^= WRING_DONE;
- cd->sound = NULL;
- }
- break;
- }
-
- if( cd->flags & ALARM )
- {
- cd->woday[2] = cd->itext[2].IText[2];
-
- if( !Strnicmp( cd->itext[2].IText, cd->woday, 4) )
- {
- if( !(cd->flags & ALARM_DONE) &&
- cd->itext[2].IText[4] == cd->woday[4] )
- {
- if( (cd->flags & SOUND) &&
- (cd->alarm = NewDTObject("DOpus5:Sounds/Alarm.snd",
- DTA_GroupID, GID_SOUND,
- TAG_DONE)) )
- {
- SetAttrs( cd->alarm, SDTA_Cycles, 3, TAG_DONE );
- DoMethod( cd->alarm, DTM_TRIGGER, NULL, STM_PLAY, TAG_DONE );
- }
- LaunchCLI( ALARM_SCRIPT, NULL, NULL, NULL, NULL, NULL, NULL );
- cd->flags |= ALARM_DONE ;
- }
-
- if( (cd->flags & ALARM_DONE) &&
- cd->itext[2].IText[4] == cd->woday[4] + 1 )
- {
- DisposeDTObject( cd->alarm );
- cd->flags ^= ALARM_DONE;
- cd->alarm = NULL;
- }
- }
- }
- }
-
-
- void GetAlarm( ClockData *cd )
- {
- cd->ncfg.nw_Parent = cd->win;
- cd->ncfg.nw_Title = VERSION_STRING;
- cd->ncfg.nw_Dims = &cfgwin;
- cd->ncfg.nw_Locale = locale;
- cd->ncfg.nw_Port = NULL;
- cd->ncfg.nw_Flags = WINDOW_REQ_FILL | WINDOW_AUTO_KEYS | WINDOW_NO_CLOSE;
- cd->ncfg.nw_Font = cd->txtfont;
-
- cd->time_req = OpenConfigWindow( &cd->ncfg );
-
- cd->olist = AddObjectList( cd->time_req, winobjects );
-
- strncpy( cd->buffer, cd->woday, 2 )[2] = NULL;
- StrToLong( cd->buffer, (LONG *)&cd->running );
- cd->h = (UBYTE) cd->running;
- SetGadgetValue( cd->olist, GADGET_ID_HOURS, cd->h*59/23 );
-
- StrToLong( &cd->woday[3], (LONG *)&cd->running );
- cd->min = (UBYTE) cd->running;
- SetGadgetValue( cd->olist, GADGET_ID_MINUTES, cd->min );
-
- sprintf( cd->buffer, "%02ld.%02ld", cd->h, cd->min );
- SetGadgetValue( cd->olist, GADGET_ID_STRING, (ULONG) cd->buffer );
-
- }
-
- BOOL HandleOwnRequest( ClockData *cd )
- {
- cd->running = FALSE;
-
- if( cd->time_req )
- {
- while( (cd->inmsg = GetWindowMsg( cd->time_req->UserPort)) )
- {
- switch( cd->inmsg->Class )
- {
- case IDCMP_MOUSEMOVE: //slider
- switch( GET_ID(cd->inmsg) )
- {
- case GADGET_ID_HOURS:
- cd->h = cd->inmsg->Code*23/59;
- break;
- case GADGET_ID_MINUTES:
- cd->min = cd->inmsg->Code;
- break;
- }
-
- sprintf( cd->buffer, "%02ld.%02ld",
- cd->h,
- cd->min );
- SetGadgetValue( cd->olist, GADGET_ID_STRING, (ULONG) cd->buffer );
- break;
-
- case IDCMP_GADGETUP:
- switch( GET_ID(cd->inmsg) )
- {
- case GADGET_ID_OK:
- sprintf( cd->woday, "%02ld.%02ld",
- cd->h,
- cd->min );
- cd->flags |= ALARM;
- GetPopUpItem( &cd->popmenu, POPID_ALARMONOFF )->flags |= POPUPF_CHECKED;
-
- if( (cd->flags & ALARM_DONE) )
- {
- DisposeDTObject( cd->alarm );
- cd->flags ^= ALARM_DONE;
- cd->alarm = NULL;
- }
-
- case GADGET_ID_CANCEL:
- cd->running = TRUE;
- break;
- }
- break;
- }
- ReplyWindowMsg( cd->inmsg);
- }
- }
- return (BOOL) cd->running;
- }
-
- BOOL HandleIPC( ClockData *cd )
- {
- cd->running = FALSE;
-
- while( (cd->ipcmsg = (APTR) GetMsg(cd->ipc->command_port)) )
- {
- if( cd->ipcmsg->command & CLOCK_QUIT )
- {
- cd->running = TRUE;
- IPC_Reply( cd->ipcmsg );
- break;
- }
-
- cd->day = 1;
-
- if( cd->ipcmsg->command & BORDER )
- {
- cd->popitem = GetPopUpItem( &cd->popmenu, POPID_BORDER );
-
- if( cd->ipcmsg->command & BORDER_ON )
- {
- cd->flags |= BORDER;
- cd->popitem->flags |= POPUPF_CHECKED;
- }
- else
- {
- if( cd->flags & BORDER )
- {
- cd->flags ^= BORDER;
- cd->popitem->flags ^= POPUPF_CHECKED;
- }
- }
-
- if( cd->win )
- BorderDraw( cd );
- }
-
- if( cd->ipcmsg->command & MODE_PASSED )
- {
- cd->itext[2].DrawMode = cd->itext[1].DrawMode =
- cd->itext[0].DrawMode = ((CPrefsData *) cd->ipcmsg->data_free)->txtattr.ta_Flags;
- }
-
- if( cd->ipcmsg->command & STYLE_PASSED )
- {
- cd->itext[2].ITextFont->ta_Style = cd->itext[1].ITextFont->ta_Style =
- cd->itext[0].ITextFont->ta_Style = ((CPrefsData *) cd->ipcmsg->data_free)->txtattr.ta_Style;
-
- if( cd->win )
- SetSoftStyle( cd->win->RPort, cd->itext[2].ITextFont->ta_Style, AskSoftStyle( cd->win->RPort));
- }
-
- if( cd->ipcmsg->command & APEN_PASSED )
- {
- cd->itext[2].FrontPen = cd->itext[1].FrontPen =
- cd->itext[0].FrontPen = ((CPrefsData *) cd->ipcmsg->data_free)->ibox.Width;
- }
-
- if( cd->ipcmsg->command & BPEN_PASSED )
- {
- cd->itext[2].BackPen = cd->itext[1].BackPen =
- cd->itext[0].BackPen = ((CPrefsData *) cd->ipcmsg->data_free)->ibox.Height;
- }
-
- if( cd->ipcmsg->command & BG_PIC )
- {
- if( cd->win )
- {
- cd->oldbm = cd->bm;
-
- if( (cd->bm = AllocBitMap(cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap)) )
- {
- if( GetBitMap(cd, ((CPrefsData *) cd->ipcmsg->data_free)->picture) )
- {
- FreeBitMap( cd->oldbm );
- strcpy( cd->picture, ((CPrefsData *) cd->ipcmsg->data_free)->picture );
-
- if( cd->flags & BG_PLAIN )
- cd->flags ^= BG_PLAIN;
-
- if( cd->flags & BG_TRANS )
- cd->flags ^= BG_TRANS;
-
- cd->flags |= BG_PIC;
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, POPID_PICTURE );
- }
- else
- {
- FreeBitMap( cd->bm );
- cd->bm = cd->oldbm;
- }
-
- BorderDraw( cd );
- }
- }
- else
- {
- if( strlen(((CPrefsData *) cd->ipcmsg->data_free)->picture) )
- {
- strcpy( cd->picture, ((CPrefsData *) cd->ipcmsg->data_free)->picture );
-
- if( cd->flags & BG_PLAIN )
- cd->flags ^= BG_PLAIN;
-
- if( cd->flags & BG_TRANS )
- cd->flags ^= BG_TRANS;
-
- cd->flags |= BG_PIC;
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, POPID_PICTURE );
- }
-
- }
- }
-
- if( cd->ipcmsg->command & BG_PLAIN )
- {
- cd->flags |= BG_PLAIN;
-
- if( cd->flags & BG_PIC )
- cd->flags ^= BG_PIC;
-
- if( cd->flags & BG_TRANS )
- cd->flags ^= BG_TRANS;
-
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, POPID_PLAIN );
-
- if( cd->win )
- {
- if( cd->bm )
- {
- FreeBitMap( cd->bm );
- cd->bm = NULL;
- }
- BorderDraw( cd );
- }
- }
-
- if( cd->ipcmsg->command & BG_TRANS )
- {
- cd->flags |= BG_TRANS;
-
- if( cd->flags & BG_PLAIN )
- {
- if( !cd->bm )
- {
- cd->bm = AllocBitMap( cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap );
- }
- cd->flags ^= BG_PLAIN;
- }
-
- if( cd->flags & BG_PIC )
- cd->flags ^= BG_PIC;
-
- if( cd->win )
- {
- CloseWin( cd );
- OpenWin( cd );
- }
-
- DisableOther( &cd->popmenu, POPID_PLAIN, POPID_PICTURE, POPID_TRANSPARENT );
- }
-
- if( cd->ipcmsg->command & ALARM )
- {
- if( strlen(((CPrefsData *) cd->ipcmsg->data_free)->alarm) )
- {
- strcpy(cd->woday, ((CPrefsData *) cd->ipcmsg->data_free)->alarm );
-
- if( !(cd->flags & ALARM) )
- {
- cd->flags |= ALARM;
- GetPopUpItem( &cd->popmenu, POPID_ALARM )->flags |= POPUPF_CHECKED;
- }
- }
- else
- {
- if( cd->ipcmsg->command & ALARM_OFF )
- {
- if( (cd->flags & ALARM) )
- {
- cd->flags ^= ALARM;
- GetPopUpItem( &cd->popmenu, POPID_ALARM )->flags ^= POPUPF_CHECKED;
- }
- }
- else
- {
- cd->flags |= ALARM;
- GetPopUpItem( &cd->popmenu, POPID_ALARM )->flags |= POPUPF_CHECKED;
- }
- }
- }
-
- if( cd->ipcmsg->command & SOUND )
- {
- if( cd->ipcmsg->command & SOUND_OFF )
- {
- if( cd->flags & SOUND )
- {
- cd->flags ^= SOUND;
- GetPopUpItem( &cd->popmenu, POPID_SOUND )->flags ^= POPUPF_CHECKED;
- }
- }
- else
- {
- cd->flags |= SOUND;
- GetPopUpItem( &cd->popmenu, POPID_SOUND )->flags |= POPUPF_CHECKED;
- }
- }
-
- if( cd->ipcmsg->command & NEW_FONT || cd->ipcmsg->command & NEW_SIZE )
- {
- if( cd->ipcmsg->command & NEW_FONT &&
- Strnicmp(&((CPrefsData *) cd->ipcmsg->data_free)->fontname[cd->running=strlen(((CPrefsData *) cd->ipcmsg->data_free)->fontname)-5], ".font", 5) )
- strcat( ((CPrefsData *) cd->ipcmsg->data_free)->fontname, ".font" );
-
- if( cd->ipcmsg->command & NEW_FONT )
- {
- strcpy( cd->fontname, ((CPrefsData *) cd->ipcmsg->data_free)->fontname );
- cd->txtattr.ta_Name = cd->fontname;
- }
-
- if( cd->ipcmsg->command & NEW_SIZE )
- cd->txtattr.ta_YSize = ((CPrefsData *) cd->ipcmsg->data_free)->txtattr.ta_YSize;
-
- if( cd->txtfont )
- CloseFont( cd->txtfont );
-
- cd->txtfont = OpenDiskFont( &cd->txtattr );
-
- GetSizes( cd );
-
- if( cd->bm )
- {
- FreeBitMap( cd->bm );
- cd->bm = NULL;
- }
-
- if( cd->flags & BG_PIC || cd->flags & BG_TRANS )
- {
- cd->bm = AllocBitMap( cd->ibox.Width, cd->ibox.Height,
- cd->screen->RastPort.BitMap->Depth,
- BMF_MINPLANES, cd->screen->RastPort.BitMap );
-
- if( cd->flags & BG_PIC )
- GetBitMap( cd, cd->picture );
- }
-
- if( cd->win )
- {
- cd->ibox.Left = cd->win->LeftEdge;
- cd->ibox.Top = cd->win->TopEdge;
-
- CloseWin( cd );
-
- OpenWin( cd );
- }
- }
-
- if( cd->win )
- PrintTime( cd );
-
- cd->running = FALSE;
- IPC_Reply( cd->ipcmsg );
- }
-
- return (BOOL) cd->running;
- }
-
- void InitPopMenu( ClockData *cd )
- {
- GetVar( CLOCKSTARTVAR, cd->buffer, 4, LV_VAR|GVF_GLOBAL_ONLY );
-
- NewList( (struct List *) &cd->popmenu.item_list );
- NewList( (struct List *) &cd->submenu );
- NewList( (struct List *) &cd->subtime );
-
- cd->popmenu.flags = POPUPMF_REFRESH;
- cd->popmenu.callback = &refresh_callback;
-
- cd->popmenu.locale = locale;
-
- for( cd->running = MSG_POPSUB_ALARMSET; cd->running <= MSG_POPSUB_ALARMONOFF; cd->running++ )
- {
- if( (cd->popitem = AllocMemH(mempool, sizeof(PopUpItem))) )
- {
- cd->popitem->item_name = (char *) cd->running;
- cd->popitem->flags = POPUPF_LOCALE;
-
- if( cd->running == MSG_POPSUB_ALARMONOFF )
- cd->popitem->flags |= POPUPF_CHECKIT | (cd->flags & ALARM ? POPUPF_CHECKED : NULL);
-
- cd->popitem->id = cd->running;
-
- AddTail( (struct List *) &cd->subtime,
- (struct Node *) &cd->popitem->node );
- }
- }
-
- for( cd->running = MSG_POPSUB_PLAIN; cd->running <= MSG_POPSUB_PICTURE; cd->running++ )
- {
- if( (cd->popitem = AllocMemH(mempool, sizeof(PopUpItem))) )
- {
- cd->popitem->item_name = (char *) cd->running;
- cd->popitem->flags = POPUPF_LOCALE|POPUPF_CHECKIT;
-
- if( cd->flags & (1 << (cd->running-MSG_POPSUB_PLAIN+9)) )
- cd->popitem->flags |= POPUPF_CHECKED;
-
- cd->popitem->id = cd->running;
-
- AddTail( (struct List *) &cd->submenu,
- (struct Node *) &cd->popitem->node );
- }
- }
-
- for( cd->running = MSG_POP_CHANGEBACK; cd->running <= MSG_POP_ABOUT; cd->running++ )
- {
- if( (cd->popitem = AllocMemH(mempool, sizeof(PopUpItem))) )
- {
- cd->popitem->item_name = (char *) cd->running;
- cd->popitem->flags = POPUPF_LOCALE;
-
- switch( cd->running )
- {
- case MSG_POP_CHANGEBACK:
- cd->popitem->flags |= POPUPF_SUB;
- cd->popitem->data = &cd->submenu;
- break;
-
- case MSG_POP_AUTOSTART :
- cd->popitem->flags |= POPUPF_CHECKIT | (cd->buffer[0] == '1' ? POPUPF_CHECKED : NULL);
- break;
-
- case MSG_POP_BORDER :
- cd->popitem->flags |= POPUPF_CHECKIT | (cd->flags & BORDER ? POPUPF_CHECKED : NULL);
- break;
-
- case MSG_POP_SOUND :
- cd->popitem->flags |= POPUPF_CHECKIT | (cd->flags & SOUND ? POPUPF_CHECKED : NULL);
- break;
-
- case MSG_POP_ALARM :
- cd->popitem->flags |= POPUPF_SUB;
- cd->popitem->data = &cd->subtime;
- break;
- }
-
- cd->popitem->id = cd->running - MSG_POP_CHANGEBACK;
-
- AddTail( (struct List *) &cd->popmenu.item_list,
- (struct Node *) &cd->popitem->node );
- }
-
- if( cd->running == MSG_POP_CHANGEFONT ||
- cd->running == MSG_POP_ALARM ||
- cd->running == MSG_POP_QUIT )
- {
- if( (cd->popitem = AllocMemH(mempool, sizeof(PopUpItem))) )
- {
- cd->popitem->item_name = POPUP_BARLABEL;
- cd->popitem->id = cd->running;
-
- AddTail( (struct List *) &cd->popmenu.item_list,
- (struct Node *) &cd->popitem->node );
- }
- }
- }
- }
-
-